//
//  TLMainTabBar.swift
//  TLSinaWeiBo
//
//  Created by 谭亮 on 16/5/11.
//  Copyright © 2016年 tanliang. All rights reserved.
//

import UIKit

class TLMainTabBar: UITabBar {
    
    // MARK: - 属性
    //:->2.加号按钮调用闭包
    var composeCallback: (() -> ())?
    
    
    //:重写父类的layoutSubviews
    //:在这里面移除frame值
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //:->计算frame的宽度
        let widths = self.frame.size.width / 5 //self.frame.width / 5
        //:->记录按钮的位置
        var indexs = 0
        //:打印subviews里的值,设置4个按钮的位置
        for view in self.subviews {
            //print("view: \(view)")
            //:找到UITabBarButton类型,才是按钮,需要修改其frame值
            //:UITabBarButton是系统隐藏的类.就无法调用这个类的方法[UITabBarButton class]
            if view.isKindOfClass(NSClassFromString("UITabBarButton")!)//:拆包
            {
                //:能到这里说明view 是 UITabBarButton类型
                //print("view: \(view)")
                
                //:->重新设置frame
                view.frame = CGRect(x: CGFloat(indexs) * widths, y: 0, width: widths, height: self.frame.height)
                
                indexs++
                if indexs == 2 {
                    indexs++
                }
            }
        }
        //print("TLMainTabBar - layoutSubviews")//:被调用两次
        //print(composeButton)
        //:->设置加号按钮的位置
        composeButton.frame = CGRect(x: 2 * widths, y: 0, width:widths, height: self.frame.height)
    }
    // MARK: - 按钮的点击事件
    func composeButtonClick() {
        //print("composeButtonClick")
        //:最终需要去Modal->模式,模态 出控制器.view不能Modal出控制器 ->只有控制器才能Modal出控制器,当按钮点击的时候需要让控制器去做事情
        //:->3.调用闭包
        composeCallback?() //可选闭包
        
    }
    
    
    /**
    *  懒加载,延迟加载 放到类的最后面
    */
     // MARK: - 懒加载
            //:生成按钮
    //lazy var composeButton: UIButton = UIButton()
    lazy var composeButton: UIButton = {
       //:创建按钮
        let button = UIButton(type: UIButtonType.Custom)//:自定义类型
       //:设置按钮的背景图片,普通跟高亮
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        
        //:设置按钮的图片,普通跟高亮
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        //:闭包里调用方法需要加self
        self.addSubview(button)
        
        //:->懒加载只执行一次,在此添加点击事件
        button.addTarget(self, action: "composeButtonClick", forControlEvents: UIControlEvents.TouchUpInside)
        
        
        return button//:返回按钮的值
    }()
    
}
